iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
5
Mobile Development

如何用 Laravel 撰寫難以維護的專案系列 第 3

[Day 3] 從變數命名開始,讓專案程式碼難以維護

  • 分享至 

  • xImage
  •  

變數是程式的基本要素之一。要寫難以維護的程式碼,在變數的命名上面,有許多技巧可用。

由於命名對編譯器來說沒有影響,因此給予我們極大的空間,可以寫出能運作,但是對之後的工程師難以看懂的程式碼。

我們這裡是介紹 Laravel,所以以下的範例均使用 PHP 語言。這些方式也可以在其他 PHP 框架或專案內使用。

誤導性的命名

想看看,維運工程師會怎麼快速理解變數的用途呢?當然是透過命名囉!正確的命名對提升程式碼的可讀性是很重要的。

透過誤導性的命名,我們可以對後來的人混淆該變數的用途,讓他花大量的時間追蹤之後,才發現原來一開始就追錯了,花費他大量的維護時間。

例如:用 $userId 代表用戶的姓名

單字母命名法

為了要趕快寫好功能,我們不浪費時間去多設計變數的名稱,一個字母就很好了。

例如:$a$b$k 都很不錯。

使用 i 的時機

多數工程師習慣以 $i 作為迴圈的 index。藉由打破這個規則,我們可以在程式碼裡面留下意想不到的錯誤

例如:

$i = 'integer';
for ($next = 0; $next > 5; $next++) {
    $this->handle($someArray[$i])
}

抽象的命名

如果有自動檢查過短的命名,那就用抽象的命名來代替。

例如:$inputData1$outputThing2$calculatedResult3$stuff4

抽象的字可以像是 thing,data,result,stuff……等。

拼字錯誤

藉由錯誤的拼字,可以讓每個看到這個變數的維護工程師,都要多想一下才能知道這個變數的意義。

例如:

    $nastLoginUser // 到底是 lastLogin 還是 nextLogin ??

大寫

PHP 取用變數時,是不看大小寫的。

在單字的每個音節隨意地插入大寫,比方說 $computeRasterHistoGram。這可以很好的避免有人在維護時,透過搜尋功能,快速的找到他想要的變數。

大家的好朋友-底線

$_$__ 宣告變數。有時也可以使用 $_(全形底線)。

重音字母

使用重音字母當變數名稱,例如:

$í;

上面的 í 其實是加了重音的 i。如果只用一般的文字編輯器,幾乎不可能看出 i 上面的一點變斜了這點不同。

小寫 l 和數字 1

用小寫 l 代表長的常數。比方說,比起 10L,10l更容易被誤認為是 101。不使用可以輕易辨認出uvw,wW, gq9,2z,5s,il17|!j,oO08,'",;,.,m nn rn,和 {[()]} 的字體。

延伸 ASCII

延伸 ASCII 符號非常適合用來命名,像是 ß、Ð 和 ñ。這些符號如果用一般的文字編輯器,除了剪貼之外,幾乎不可能輸入。

熱愛中文命名

範例如下:

public function 中文函式命名()
{
    $中文變數 = 1;
    $中文變數 = $中文變數 + 0;
}

如果有同事抱怨 IDE 不斷提示有錯誤,請他們將錯誤提示關掉。

重用變數

PHP 是一個動態語言,變數的形態可以在程式運行期間改變。善用這個特徵,可以寫出幾乎無法理解的程式碼

例如:

$test = []; // 陣列
...

$test = "asdf"; // 改成字串

這樣一來,維運工程必須逐行確認才能知道現在這個變數是哪個形態,大大的減緩他維護的效能。


上一篇
[Day 2] 談環境設置與版本控制
下一篇
[Day 4] 混淆變數命名的利器!談匈牙利命名法
系列文
如何用 Laravel 撰寫難以維護的專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
answer212224
iT邦新手 5 級 ‧ 2022-12-26 16:13:51

這是我看過最實用的文章,謝謝版主。

我要留言

立即登入留言